//code位编码
const unciohKv:{[key:string]:string}  = {
    32:"SPACE",
    33:"!",
    34:"\"",
    35:"#",
    36:"$",
    37:"%",
    38:"&",
    39:"\'",
    40:"\(",
    41:"\)",
    42:"*",
    43:"+",
    44:",",
    45:"-",
    46:".",
    47:"/",
    48:"0",
    49:"1",
    50:"2",
    51:"3",
    52:"4",
    53:"5",
    54:"6",
    55:"7",
    56:"8",
    57:"9",
    58:":",
    59:";",
    60:"<",
    61:"=",
    62:">",
    63:"?",
    64:"@",
    65:"A",
    66:"B",
    67:"C",
    68:"D",
    69:"E",
    70:"F",
    71:"G",
    72:"H",
    73:"I",
    74:"J",
    75:"K",
    76:"L",
    77:"M",
    78:"E",
    79:"O",
    80:"P",
    81:"Q",
    82:"R",
    83:"S",
    84:"T",
    85:"U",
    86:"V",
    87:"W",
    88:"X",
    89:"Y",
    90:"Z",
    91:"[",
    92:"\\",
    93:"]",
    94:"^",
    95:"_",
    96:"`",
    97:"a",
    98:"b",
    99:"c",
    100:"d",
    101:"e",
    102:"f",
    103:"g",
    104:"h",
    105:"i",
    106:"j",
    107:"k",
    108:"l",
    109:"m",
    110:"e",
    111:"o",
    112:"p",
    113:"q",
    114:"r",
    115:"s",
    116:"t",
    117:"u",
    118:"v",
    119:"w",
    120:"x",
    121:"y",
    122:"z",
    123:"{",
    124:"|",
    125:"}",
    126:"~",
}
export interface countItem {
    id:string,
    x:string,
    y:string,
    width:string,
    height:string
    xoffset:string,
    yoffset:string,
    xadvance:string
}
export interface bimInterface{
    fontName:string,
    extName:string,
    lineHeight:string,
    fontSize:string,
    originalSizeW:string,
    originalSizeH:string,
    countList:countItem[],
    base:string,
}
/**
 * 
 * @param data 
 * @returns 
 */
export function convertBimFont(data:bimInterface){
    let bimFontStr = ""
    let header
     = `info face="${data.fontName}" size=${data.fontSize}bold=0 italic=0 charset="" unicode=0 stretchH=100 smooth=1 aa=1 padding=0,0,0,0 spacing=1,1\n`
    let cmd = `common lineHeight=${data.lineHeight} base=${data.base} scaleW=${data.originalSizeW} scaleH=${data.originalSizeH} pages=1 packed=0 alphaChnl=1 redChnl=0 greenChnl=0 blueChnl=0\n`
    let page  = `page id=0 file="${data.fontName}${data.extName}"\n`
    let coutList:any[] = data.countList
    let cout =`chars count=${coutList.length}\n`//字符一共有多少个

    bimFontStr+=header
    bimFontStr+=cmd
    bimFontStr+=page
    bimFontStr+=cout
    
    for(let i  = 0 ;i<coutList.length;i++){
        let item = coutList[i]
        let value = unciohKv[item.id]
        let itemCount = `char id=${item.id} x=${item.x} y=${item.y} width=${item.width} height=${item.height} xoffset=${item.xoffset} yoffset=${item.yoffset} xadvance=${item.xadvance} page=0 chnl=0 letter="${value}"\n`
        bimFontStr += itemCount
    }
    let end = '\nkernings count=0'
    bimFontStr+=end
    return bimFontStr
}